import request from '@/config/axios'

// 成果库 VO
export interface ResourceFileVO {
  id: number // 文件编号
  parentId: number // 父级ID
  resourceCode: string // 资源编码
  resourceType: string // 资源类型
  rightStatus: number // 查看权限
  operRight: number // 操作权限
  configId: number // 配置编号
  name: string // 文件名
  path: string // 文件路径
  url: string // 文件 URL
  type: string // 文件类型
  size: number // 文件大小
  status: number // 状态
  userName: string // 创建人
  deptId: number // 创建部门ID
  deptName: string // 创建部门
}
// Response interface
export interface ResourceRes {
  /* */
  code: number

  /* */
  data: number

  /* */
  msg: string
}
// 成果库 API
export const ResourceFileApi = {
  // 查询成果库分页
  getResourceFilePage: async (params: any) => {
    return await request.get({ url: `/school/resource/page`, params })
  },
  // 查询资源的用户权限信息
  getResourceUsers: async (id: number) => {
    return await request.get({ url: `/school/resource/get_users?id=${id}` })
  },
  // 查询成果库详情
  getResourceFile: async (id: number) => {
    return await request.get({ url: `/school/resource/get?id=` + id })
  },

  // 新增成果库
  createResourceFile: async (data: ResourceFileVO) => {
    return await request.post({ url: `/school/resource/create`, data })
  },

  // 修改成果库
  updateResourceFile: async (data: ResourceFileVO) => {
    return await request.put({ url: `/school/resource/update`, data })
  },

  // 删除成果库
  deleteResourceFile: async (id: number) => {
    return await request.delete({ url: `/school/resource/delete?id=` + id })
  },

  // 导出成果库 Excel
  exportResourceFile: async (params) => {
    return await request.download({ url: `/school/resource/export-excel`, params })
  },

  /**
   * 创建目录
   * @param {object} params 管理后台 - 文件目录新增/修改 Request VO
   * @param {number} params.id 文件编号,更新时必填
   * @param {number} params.parentId 父级ID。顶级目录默认为 0
   * @param {string} params.resourceCode 资源编码。achievement-成果库，contracts-合同库，archives-档案库。从数据字典中取值
   * @param {number} params.rightStatus 查看权限。0-全员可见；1-群组可见；2-自己可见。从数据字典中取值
   * @param {string} params.name 目录名称
   * @returns
   */
  createResourceFolder: async (data): Promise<ResourceRes> => {
    return await request.post({ url: `/school/resource/create-folder`, data })
  },
  /**
   * 更新目录信息
   * @param {object} params 管理后台 - 文件目录新增/修改 Request VO
   * @param {number} params.id 文件编号,更新时必填
   * @param {number} params.parentId 父级ID。顶级目录默认为 0
   * @param {string} params.resourceCode 资源编码。achievement-成果库，contracts-合同库，archives-档案库。从数据字典中取值
   * @param {number} params.rightStatus 查看权限。0-全员可见；1-群组可见；2-自己可见。从数据字典中取值
   * @param {string} params.name 目录名称
   * @returns
   */
  updateResourceFolder: async (data): Promise<ResourceRes> => {
    return await request.put({ url: `/school/resource/update-folder`, data })
  },
  /**
   * 上传资源
   * @param {string} id 文件编号
   * @param {string} parentId 父级ID
   * @param {string} resourceCode 资源编码
   * @param {string} rightStatus 查看权限
   * @param {string} directory 文件目录. 格式：resource/xxx  说明：xxx是资源库名称。例如：成果库，则directory=resource/achievement
   * @param {string} userIds 群级成员。当rightStatus=1时必填
   * @returns
   */
  createResourceFiles: async (data): Promise<ResourceRes> => {
    return await request.upload({ url: `/school/resource/create-file`, data })
  },

  /**
   * 批量删除文件或目录
   * @param {string} ids 编号
   * @returns
   */
  deleteResourceFileList: async (params) => {
    return await request.delete({ url: `/school/resource/delete-list`, params })
  }
}
